package com.ganlinux.pangoo.main;

import com.ganlinux.pangoo.controller.IndexController;
import com.ganlinux.pangoo.controller.restful.app.AddressSearchController;
import com.ganlinux.pangoo.controller.restful.app.CheckUpdateController;
import com.ganlinux.pangoo.controller.restful.footmark.*;
import com.ganlinux.pangoo.controller.restful.user.LoginController;
import com.ganlinux.pangoo.controller.restful.user.UserInfoController;
import com.ganlinux.pangoo.controller.restful.user.VerifyCodeController;
import com.ganlinux.pangoo.dao.model._MappingKit;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.c3p0.C3p0Plugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.template.Engine;

/**
 * API引导式配置
 */
public class MainConfig extends JFinalConfig {


	public static DruidPlugin createDruidPlugin() {
		return new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
	}
	/**
	 * 配置常量
	 */
	public void configConstant(Constants me) {
		// 加载少量必要配置，随后可用PropKit.get(...)获取值
		PropKit.use("a_little_config.txt");
		me.setDevMode(PropKit.getBoolean("devMode", false));
	}


	/**
	 * 配置路由
	 */
	public void configRoute(Routes me) {
		/*me.add("/", IndexController.class, "/index");	// 第三个参数为该Controller的视图存放路径
		me.add("/footprintdisplay", FootPrintDisplayController.class, "/mobile");	// 第三个参数为该Controller的视图存放路径
*/
		//test
		me.add("/index", IndexController.class);
		//User
		me.add("/userlogin", LoginController.class);		//登录
		me.add("/UserInfo", UserInfoController.class);
		//footmark
		me.add("/footmarkedit", FootMarkCreateAndUpdateController.class);//获取用户行程概况列表
		me.add("/FootMarkDelete", FootMarkDeleteController.class);//删除用户行程概况列表
		me.add("/FootPrintInfo", FootMarkInfoController.class);//获取用户行程概况列表
		me.add("/footmarklist", FootMarkSimpleListController.class);//获取用户行程概况列表
		me.add("/FootPrintMapInfoList", FootMarkMapInfoListController.class);//获取用户行程概况列表
		me.add("/FootMarkStatistics", FootMarkStatisticsController.class);//获取用户行程统计接口
		//推荐
		me.add("/FootMarkRecommendedList", FootMarkRecommendedListController.class);//获取用户行程概况列表
		//其他
		me.add("/searchaddress", AddressSearchController.class);//地址查找
		me.add("/checkupdate", CheckUpdateController.class);//检查更新


		me.add("/GetVerifyCode", VerifyCodeController.class);	//验证码
		/*//		me.add("/travellist", TravelListController.class);	//
		me.add("/UpdateUserTravelInfo", UpdateTravelInfoController.class);	//更新行程列表
		me.add("/GetUserTravelInfo", GetTravelInfoController.class);//获取用户行程详情
		me.add("/GetUserTravelSimpleList", GetTravelSimpleListController.class);//获取用户行程概况列表
		me.add("/SearchAddress", AddressSearchController.class);//获取用户行程概况列表
		//		me.add("/updateuserstravel", UpdateUsersTravelController.class);


		me.add("/FootPrintCreateUpdate", FootMarkCreateAndUpdateController.class);//获取用户行程概况列表
		me.add("/FootPrintInfo", FootMarkInfoController.class);//获取用户行程概况列表
		me.add("/FootPrintSimpleList", FootMarkSimpleListController.class);//获取用户行程概况列表
		me.add("/FootPrintMapInfoList", FootMarkMapInfoListController.class);//获取用户行程概况列表
		me.add("/FootPrintDelete", FootMarkDeleteController.class);//获取用户行程概况列表
		me.add("/DownLoadAPK", DownLoadController.class);//获取用户行程概况列表
		me.add("/CheckUpdate", CheckUpdateController.class);//获取用户行程概况列表*/
	}

	public void configEngine(Engine engine) {

	}

	public static C3p0Plugin createC3p0Plugin() {
		return new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
	}

	/**
	 * 配置插件
	 */
	public void configPlugin(Plugins me) {
		// 配置C3p0数据库连接池插件
		/*C3p0Plugin C3p0Plugin = createC3p0Plugin();
		me.add(C3p0Plugin);*/
		// 配置C3p0数据库连接池插件
		DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
		me.add(druidPlugin);

		// 配置ActiveRecord插件 
		ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
		me.add(arp);

		 //所有配置在 MappingKit 中搞定
		_MappingKit.mapping(arp);

		/*//任务
		SchedulerPlugin sp = new SchedulerPlugin("job.properties");
        me.add(sp);*/
	}

	/**
	 * 配置全局拦截器
	 */
	public void configInterceptor(Interceptors me) {
		//		me.add(new TravelListInterceptor());
		//		me.add(new TxByActionKeys("/travellist"));
//		me.add(new SessionInViewInterceptor());
	}

	/**
	 * 配置处理器
	 */
	public void configHandler(Handlers me) {

	}

	/**
	 * 建议使用 JFinal 手册推荐的方式启动项目
	 * 运行此 main 方法可以启动项目，此main方法可以放置在任意的Class类定义中，不一定要放于此
	 */
	public static void main(String[] args) {
//		JFinal.start("WebRoot", 8080, "/jfinal_demo", 5);
		JFinal.start("src/main/webapp", 12345, "/footprint");
	}

}
